فرآیند بوت (Boot) در لینوکس، مجموعه مراحلی است که از لحظه روشن شدن سیستم تا آماده شدن برای ورود کاربر انجام میشود. درک این مراحل برای عیبیابی، تنظیمات پیشرفته و مدیریت سیستم بسیار حیاتی است. در این جلسه، گامبهگام با این فرآیند آشنا میشویم و با استفاده از ابزارهای خط فرمان، اطلاعات سختافزاری سیستم خود را بررسی میکنیم.
/etc/profile و ~/.bashrc را اجرا میکند.با روشن شدن سیستم، جریان برق به مادربرد و قطعات میرسد و پردازنده شروع به اجرای کدهای ذخیرهشده در حافظه غیرفرار (Non-volatile Memory) میکند.
سیستم ابتدا BIOS (Basic Input/Output System) یا UEFI (Unified Extensible Firmware Interface) را اجرا میکند. این نرمافزار، POST (Power-On Self Test) را انجام میدهد تا سلامت سختافزارهای اولیه مانند RAM، صفحه کلید و دیسکها را بررسی کند.
حجم کدهای اجرایی BIOS/UEFI بسیار کم است و فقط برای انجام وظایف اولیه طراحی شده است. به همین دلیل، برای بارگذاری سیستمعامل به یک برنامه کمکی به نام Bootloader نیاز دارد.
BIOS/UEFI تمام دستگاههای متصل را شناسایی میکند و بر اساس ترتیب تعیینشده در تنظیمات، به دنبال دستگاه بوت (معمولاً دیسک سخت) میگردد. سپس اولین سکتور (Sector) آن دیسک را که شامل کد راهاندازی اولیه (Bootstrap) است، میخواند و اجرا میکند.
Bootloader مانند GRUB (Grand Unified Bootloader) وظیفه بارگذاری هسته لینوکس را دارد. GRUB به کاربر اجازه میدهد تا در صورت نیاز، هسته یا سیستمعامل دیگری را انتخاب کند.
هسته (Kernel) لینوکس بارگذاری میشود، دستگاهها را شناسایی میکند و سپس اولین پردازش در فضای کاربری (User Space) یعنی systemd (با PID ۱) را اجرا میکند. systemd مدیر سرویسهای اصلی سیستم است.
systemd بر اساس target پیشفرض (معمولاً multi-user.target)، سرویسهای مختلف مانند sshd.service، getty.target و ... را راهاندازی میکند. در نهایت، اسکریپتهای محیط کاربر مانند /etc/profile و ~/.bashrc اجرا میشوند و سیستم آماده ورود کاربر میشود.
در این بخش، دستوراتی که در ترمینال اجرا کردیم را بررسی میکنیم. این دستورات به ما امکان میدهند تا اطلاعات دقیق سختافزاری سیستم را که در طول فرآیند بوت جمعآوری شدهاند، مشاهده کنیم.
/proc (پردازشها و اطلاعات هسته)
دایرکتوری /proc یک سیستم فایل مجازی (Virtual Filesystem) است که توسط هسته ایجاد میشود و اطلاعات لحظهای در مورد پردازشها، سختافزار و تنظیمات هسته را در اختیار کاربر قرار میدهد. این دایرکتوری برای عیبیابی سختافزاری بسیار مفید است.
توضیح: با cd /proc وارد دایرکتوری مجازی /proc میشویم. ls لیستی از فایلها و دایرکتوریها را نشان میدهد که هرکدام اطلاعات خاصی را ارائه میدهند. دایرکتوریهای شمارهدار (مثل 1, 10, 100) مربوط به پردازشهای در حال اجرا هستند.
cat /proc/meminfo
توضیح: این فایل اطلاعات دقیقی در مورد حافظه فیزیکی و Swap سیستم ارائه میدهد. MemTotal کل حافظه، MemFree حافظه آزاد و MemAvailable حافظه در دسترس را نشان میدهد.
cat /proc/cpuinfoتوضیح: این فایل اطلاعات کامل پردازنده را نمایش میدهد. از جمله مدل، سرعت (MHz)، اندازه کش، تعداد هستهها (cpu cores) و قابلیتهای پشتیبانیشده (flags). در خروجی بالا، ما یک پردازنده Intel Core i5-11400H با ۶ هسته و ۱۲ رشته (siblings) داریم.
cat /proc/interrupts
توضیح: این فایل تعداد وقفههای (Interrupts) ارسالشده به هر هسته CPU را نشان میدهد. برای مثال، IRQ 172 مربوط به کارت گرافیک i915 است و بیشترین وقفه را پردازش کرده است.
cat /proc/iomemتوضیح: این فایل نقشه حافظه فیزیکی سیستم را نشان میدهد و مشخص میکند که هر بخش از حافظه به کدام دستگاه یا بخش سیستم اختصاص داده شده است.
/sys (اطلاعات دستگاهها)
دایرکتوری /sys نیز یک سیستم فایل مجازی است که اطلاعات دستگاهها و درایورهای هسته را در اختیار کاربر قرار میدهد.
توضیح: /sys شامل اطلاعاتی است که کاربر با سختافزار در ارتباط است. مثلاً /sys/class یا /sys/devices اطلاعات دستگاهها را دارند.
free -h
توضیح: free -h میزان حافظه استفادهشده و آزاد را به صورت قابل خواندن برای انسان (Human-readable) نمایش میدهد. این دستور اطلاعات لحظهای از /proc/meminfo را خلاصهسازی میکند.
lscpu
توضیح: lscpu اطلاعات معماری CPU را نمایش میدهد. از جمله تعداد هستهها، رشتهها، معماری (x86_64) و فرکانس.
lsblk
توضیح: lsblk ساختار دیسکها و پارتیشنها را به صورت درختی نمایش میدهد. nvme0n1 یک دیسک NVMe با ظرفیت ۴۷۶.۹ گیگابایت است که به چند پارتیشن تقسیم شده است. /dev/nvme0n1p6 با ۳۸ گیگ، پارتیشن ریشه (/) است و /dev/nvme0n1p5 پارتیشن /boot/efi است.
lsusb
توضیح: lsusb دستگاههای USB متصل به سیستم را نمایش میدهد. در خروجی بالا، دستگاههایی مانند کیبورد/ماوس بیسیم (YICHIP) و وبکم (USB2.0 HD UVC WebCam) قابل مشاهده هستند.
lshw برای اطلاعات کامل سختافزاری
توضیح: lshw اطلاعات جامع و دقیقی از تمام سختافزارهای سیستم (مادربرد، CPU، حافظه، PCI، USB، دیسک و ...) را نمایش میدهد. این دستور نیاز به دسترسی sudo دارد.
lsdev برای مشاهده دستگاهها
توضیح: lsdev اطلاعات دستگاههای سیستم را به همراه IRQ، DMA و پورتهای I/O نمایش میدهد. این ابزار با نصب بسته procinfo در دسترس قرار میگیرد.
/proc: اطلاعات لحظهای هسته و پردازشها./sys: اطلاعات دستگاهها و درایورها.cat /proc/meminfo، cat /proc/cpuinfo، lscpu، lsblk، lsusb، lshw، free -h و lsdev.cat /proc/cpuinfo اطلاعات پردازنده خود را بررسی کنید.lsblk ساختار پارتیشنبندی دیسک خود را ببینید و هر پارتیشن را شناسایی کنید.free -h میزان حافظه آزاد و استفادهشده را مشاهده کنید.lshw اطلاعات کامل سختافزاری را دریافت کنید.lsusb دستگاههای USB متصل را شناسایی کنید.